#pragma once

#include "IGameState.h"
#include <string>

class CutsceneState : IGameState {

public:

	// Scenes that can be played
	enum Cutscenes {SCENE_NULL, SCENE_BEGINNING, SCENE_BEGINNING2, SCENE_RESEARCHLABSTORY, SCENE_RESEARCHLAB, SCENE_RESEARCHLAB2, SCENE_POWER, SCENE_POWERSTORY,
		SCENE_MSTORY, SCENE_M, SCENE_M2, SCENE_RSTORY, SCENE_R, SCENE_R2, SCENE_POWER2, SCENE_GAMEOVER, SCENE_VICTORY, SCENE_GAMECOMPLETE};

	// Initialize the scene
	virtual void Enter();

	// Shutdown
	virtual void Exit();

	// Get input
	virtual bool Input();

	// Update the scene
	virtual void Update(float elapsedTime);

	// Draw the scene
	virtual void Render();

	// Show a cutscene
	void RunCutscene(Cutscenes scene);

	// Get the singleton
	static CutsceneState* GetInstance();

	bool Finished;		// Is the cutscene over?

private:

	/* Scene data */
	Cutscenes Scene;	// Which scene is being played?
	int Image;			// What is the image displaying?
	std::string Text;	// The text to be displayed
	float TimeRemaining;// How long is the cutscene
	
	// Trilogy
	CutsceneState(const CutsceneState& scene);
	CutsceneState& operator=(const CutsceneState& other);
	CutsceneState() { }
	~CutsceneState() { }

	// Text movement
	int SpeedX;
	int SpeedY;
	float X;
	float Y;

};
